import service from '../utils/request'

// ==================== 学生端 API ====================

/**
 * 获取课程分类列表
 */
export function getCourseCategories() {
  return service.get('/api/learning/categories')
}

/**
 * 获取课程列表
 * @param {Object} params 查询参数
 * @param {number} params.categoryId - 分类ID
 * @param {string} params.difficulty - 难度：beginner/intermediate/advanced
 * @param {string} params.sortBy - 排序方式：latest/popular/price
 * @param {number} params.page - 页码
 * @param {number} params.size - 每页数量
 */
export function getCourseList(params) {
  return service.get('/api/learning/courses', { 
    params: params || {}
  })
}

/**
 * 获取课程详情
 * @param {number} courseId 课程ID
 */
export function getCourseDetail(courseId) {
  return service.get(`/api/learning/courses/${courseId}`)
}

/**
 * 获取视频详情
 * @param {number} videoId 视频ID
 */
export function getVideoDetail(videoId) {
  return service.get(`/api/learning/videos/${videoId}`)
}

/**
 * 获取用户学习进度
 * @param {number} courseId 课程ID
 */
export function getUserProgress(courseId) {
  return service.get(`/api/learning/progress/${courseId}`)
}

/**
 * 更新视频学习进度
 * @param {number} videoId 视频ID
 * @param {Object} data 进度数据
 * @param {number} data.currentTime - 当前播放时间
 * @param {number} data.duration - 视频总时长
 * @param {boolean} data.completed - 是否完成
 */
export function updateVideoProgress(videoId, data) {
  return service.post(`/api/learning/videos/${videoId}/progress`, data)
}

// ==================== 管理员 API ====================

/**
 * 创建课程分类
 * @param {Object} data 分类数据
 * @param {string} data.name - 分类名称
 * @param {string} data.description - 分类描述
 */
export function createCategory(data) {
  return service.post('/api/learning/admin/categories', data)
}

/**
 * 创建课程
 * @param {Object} data 课程数据
 * @param {string} data.title - 课程标题
 * @param {string} data.description - 课程描述
 * @param {number} data.categoryId - 分类ID
 * @param {string} data.difficulty - 难度
 * @param {number} data.price - 价格
 * @param {string} data.cover - 封面图片URL
 * @param {number} data.instructorId - 讲师ID
 */
export function createCourse(data) {
  return service.post('/api/learning/admin/courses', data)
}

/**
 * 更新课程
 * @param {number} courseId 课程ID
 * @param {Object} data 课程数据
 */
export function updateCourse(courseId, data) {
  return service.put(`/api/learning/admin/courses/${courseId}`, data)
}

/**
 * 删除课程
 * @param {number} courseId 课程ID
 */
export function deleteCourse(courseId) {
  return service.delete(`/api/learning/admin/courses/${courseId}`)
}

/**
 * 创建章节
 * @param {number} courseId 课程ID
 * @param {Object} data 章节数据
 * @param {string} data.title - 章节标题
 * @param {string} data.description - 章节描述
 * @param {number} data.orderIndex - 排序索引
 */
export function createChapter(courseId, data) {
  return service.post(`/api/learning/admin/courses/${courseId}/chapters`, data)
}

/**
 * 创建视频
 * @param {number} chapterId 章节ID
 * @param {Object} data 视频数据
 * @param {string} data.title - 视频标题
 * @param {string} data.description - 视频描述
 * @param {string} data.videoUrl - 视频URL
 * @param {number} data.duration - 视频时长（秒）
 * @param {number} data.orderIndex - 排序索引
 * @param {string} data.accessType - 访问类型：free/preview/course/vip
 * @param {number} data.previewDuration - 试看时长（秒）
 */
export function createVideo(chapterId, data) {
  return service.post(`/api/learning/admin/chapters/${chapterId}/videos`, data)
}

/**
 * 上传视频文件
 * @param {FormData} formData 包含视频文件的表单数据
 * @param {Function} onProgress 上传进度回调
 */
export function uploadVideo(formData, onProgress) {
  return service.post('/api/learning/admin/videos/upload', formData, {
    headers: {
      'Content-Type': 'multipart/form-data'
    },
    onUploadProgress: onProgress
  })
}

/**
 * 上传课程封面
 * @param {FormData} formData 包含图片文件的表单数据
 * @param {Function} onProgress 上传进度回调
 */
export function uploadCover(formData, onProgress) {
  return service.post('/api/learning/admin/upload/cover', formData, {
    headers: {
      'Content-Type': 'multipart/form-data'
    },
    onUploadProgress: onProgress
  })
}

/**
 * 记录学习进度（别名函数，兼容旧代码）
 * @param {number} videoId 视频ID
 * @param {Object} data 进度数据
 */
export function recordLearningProgress(videoId, data) {
  return updateVideoProgress(videoId, data)
}

/**
 * 上传课程封面（别名函数，兼容旧代码）
 * @param {FormData} formData 包含图片文件的表单数据
 * @param {Function} onProgress 上传进度回调
 */
export function uploadCourseCover(formData, onProgress) {
  return uploadCover(formData, onProgress)
}
